Function.prototype
。var add = function(a, b){
return a + b;
}
var myobj = {
value: 0,
increment: function (inc) {
this.value += typeof inc === 'number' ? inc : 1;
// 引數不是數值,則使用預設 1。
}
};
myObject.increment( );
console.log(myObject.value); //1
myObject.increment(2);
console.log(myObject.value); //3
myObject.double = function ( ) {
var that = this;
var helper = function ( ) {
that.value = add(that.value, that.value)
};
}
myObject.double( );
document.writeln(myObject.getValue);
new
,建立的新物件將附有對函式的 prototype 有繫結,且 this 與新物件結合。new
合用的函式稱為建構式,未附上會有編譯錯誤的狀況。var array = [3, 4];
var sum = add.apply(null, array);
var statusObject = {
status: 'A-OK'
};
var status = Quo.prototype.get_status.apply(statusObject);
var sum = function ( ){
var i, sum = 0;
for (i = 0 ; i < arguments.length; i += 1 ){
sum += arguments[i];
}
return sum;
};
}
結尾符號結束呼叫。var add = function (a, b) {
if (typeof a !== 'number' || typeof b !== 'number') {
throw {
name: 'TypeError',
message: 'add need numbers'
}
return a + b;
}
}
var try_it = function ( ) {
try {
add ('seven');
} catch (e) {
document.writeln(e.name + ' ' + e.message);
}
}
內層函式能取用外層函式的參數和變數(除了 this 和 arguments),而不是變數的拷貝。
範例:
var myObject = function ( ){
var value = 0;
return {
increment: function (inc) {
value += typeof inc === 'number' ? inc : 1;
},
getValue: function ( ) {
return value;
}
}
}( );
網路上有同步請求,會使得用戶處於凍結狀態,較佳的方式是製作非同步請求,用戶才不會被阻塞。
資料來源:《JavaScript 優良部份》 Douglas Crockford 著 歐萊禮
筆記純屬推廣及分享,如有侵權,請告知。
Please advise to remove immediately if any infringement caused.